
#if !defined (_MLVEC4_H)
#define _MLVEC4_H

#include "mlMath.h"

namespace ml 
{

	class Vec3;

	__declspec(align(16)) class Vec4
	{

	public:

		float X, Y, Z, W;

		Vec4(void);
		Vec4(const Vec4 &);
		Vec4(const Vec3 &, float);
		Vec4(const Vec2 &, float, float);
		Vec4(float, float, float, float);
		~Vec4(void);

		Vec4 &operator =(const Vec4 &a);
		bool operator ==(const Vec4 &) const;
		bool operator !=(const Vec4 &) const;
		Vec4 operator -(void) const;
		Vec4 operator +(const Vec4 &) const;
		Vec4 operator -(const Vec4 &) const;
		Vec4 operator *(float) const;
		Vec4 operator /(float) const;
		Vec4 &operator +=(const Vec4 &);
		Vec4 &operator -=(const Vec4 &);
		Vec4 &operator *=(float);
		Vec4 &operator /=(float);
		float &operator [](int);
		float operator *(const Vec4 &) const;

		float * toFloatPtr(void) const;
		Vec3 toVec3(void);
		Vec2 toVec2(void);

		void normalize(void);
		void zero(void);

	protected:

	};

}

#endif